home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / Common / include / netclient.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-31  |  3.9 KB  |  103 lines

  1. //-----------------------------------------------------------------------------
  2. // File: NetConnect.h
  3. //
  4. // Desc:
  5. //
  6. // Copyright (C) 2000-2001 Microsoft Corporation. All Rights Reserved.
  7. //-----------------------------------------------------------------------------
  8. #ifndef NETCLIENT_H
  9. #define NETCLIENT_H
  10.  
  11.  
  12. #include <windows.h>
  13. #include <dplay8.h>
  14. #include <dpaddr.h>
  15. #include <tchar.h>
  16.  
  17.  
  18. //-----------------------------------------------------------------------------
  19. // Defines, structures, and error codes
  20. //-----------------------------------------------------------------------------
  21. #define DISPLAY_REFRESH_RATE        250
  22. #define TIMERID_DISPLAY_HOSTS       1
  23. #define TIMERID_CONNECT_COMPLETE    2
  24.  
  25.  
  26. #define NCW_S_FORWARD      0x01000001  // Dialog success, so go forward
  27. #define NCW_S_BACKUP       0x01000002  // Dialog canceled, show previous dialog
  28. #define NCW_S_QUIT         0x01000003  // Dialog quit, close app
  29. #define NCW_S_LOBBYCONNECT 0x01000004  // Dialog connected from lobby, connect success
  30.  
  31.  
  32. class CNetClientWizard
  33. {
  34. public:
  35.     CNetClientWizard( HINSTANCE hInst, TCHAR* strAppName, GUID* pGuidApp );
  36.     virtual ~CNetClientWizard();
  37.  
  38.     HRESULT WINAPI MessageHandler( PVOID pvUserContext, DWORD dwMessageId, PVOID pMsgBuffer );
  39.     HRESULT WINAPI LobbyMessageHandler( PVOID pvUserContext, DWORD dwMessageId, PVOID pMsgBuffer );
  40.  
  41.     VOID    Init( IDirectPlay8Client* pDPClient, IDirectPlay8LobbiedApplication* pLobbiedApp );
  42.     HRESULT DoConnectWizard();
  43.     HRESULT ConnectUsingLobbySettings();
  44.  
  45.     void    SetPlayerName( TCHAR* strPlayerName )  { _tcscpy( m_strLocalPlayerName, strPlayerName ); }
  46.     TCHAR*  GetPlayerName()                        { return m_strLocalPlayerName; }
  47.     BOOL    HaveConnectionSettingsFromLobby()      { return m_bHaveConnectionSettingsFromLobby; }
  48.  
  49. protected:
  50.     struct DPHostEnumInfo
  51.     {
  52.         DWORD                 dwRef;
  53.         DPN_APPLICATION_DESC* pAppDesc;
  54.         IDirectPlay8Address* pHostAddr;
  55.         IDirectPlay8Address* pDeviceAddr;
  56.         TCHAR                szSession[MAX_PATH];
  57.         DWORD                dwLastPollTime;
  58.         BOOL                 bValid;
  59.         DPHostEnumInfo*      pNext;
  60.     };
  61.  
  62.     static INT_PTR CALLBACK StaticSessionsDlgProc( HWND, UINT, WPARAM, LPARAM );
  63.     static INT_PTR CALLBACK StaticLobbyWaitDlgProc( HWND, UINT, WPARAM, LPARAM );
  64.     INT_PTR CALLBACK SessionsDlgProc( HWND, UINT, WPARAM, LPARAM );
  65.     INT_PTR CALLBACK LobbyWaitDlgProc( HWND, UINT, WPARAM, LPARAM );
  66.  
  67.     VOID    SessionsDlgInitListbox( HWND hDlg );
  68.     HRESULT SessionsDlgEnumHosts( HWND hDlg );
  69.     HRESULT SessionsDlgNoteEnumResponse( PDPNMSG_ENUM_HOSTS_RESPONSE pEnumHostsResponse );
  70.     VOID    SessionsDlgExpireOldHostEnums();
  71.     HRESULT SessionsDlgDisplayEnumList( HWND hDlg );
  72.     HRESULT SessionsDlgJoinGame( HWND hDlg );
  73.     HRESULT SessionsDlgCreateGame( HWND hDlg );
  74.     VOID    SessionsDlgEnumListCleanup();
  75.  
  76.     IDirectPlay8Client*     m_pDPClient;
  77.     IDirectPlay8LobbiedApplication* m_pLobbiedApp;
  78.     CRITICAL_SECTION        m_csHostEnum;
  79.     GUID                    m_guidApp;
  80.     HRESULT                 m_hrDialog;
  81.     HWND                    m_hDlg;
  82.     HINSTANCE               m_hInst;
  83.     DPHostEnumInfo          m_DPHostEnumHead;
  84.     TCHAR                   m_strAppName[MAX_PATH];
  85.     TCHAR                   m_strLocalPlayerName[MAX_PATH];
  86.     BOOL                    m_bSearchingForSessions;
  87.     BOOL                    m_bEnumListChanged;
  88.     DPNHANDLE               m_hEnumAsyncOp;
  89.     DWORD                   m_dwEnumHostExpireInterval;
  90.     BOOL                    m_bConnecting;
  91.     DPNHANDLE               m_hConnectAsyncOp;
  92.     HANDLE                  m_hConnectCompleteEvent;
  93.     HANDLE                  m_hLobbyConnectionEvent;
  94.     HRESULT                 m_hrConnectComplete;
  95.     BOOL                    m_bHaveConnectionSettingsFromLobby;
  96.     DPNHANDLE               m_hLobbyClient;
  97. };
  98.  
  99.  
  100. #endif // NETCLIENT_H
  101.  
  102.  
  103.